package editor
{
	import Classes.pi_events;
	import Classes.pi_images;
	
	import UIFree.uif_component;
	
	import flash.events.Event;
	import flash.events.TimerEvent;
	import flash.geom.Rectangle;
	import flash.utils.Timer;

	public class pi_loader extends uif_component {
		private var _clear_timer: Timer;
		protected var _requestCount	: int;
		
		public function pi_loader(parent:uif_component, ax:int=0, ay:int=0, 
									awidth:int=0, aheight:int=0, styleClass:String='') {
			super(parent, ax, ay, awidth, aheight, styleClass);
			_requestCount = 0;
			visible = false;
			var inner: Rectangle = getInner();
			
			var loader: Object = addChild(new pi_images.c_loader());
			loader.x = inner.x + inner.width / 2; 
			loader.y = inner.y + inner.height - 15; 
			
			initEvents();
			
			_clear_timer = new Timer(getTimeout(), 1);	// Предотвращает зависание индикатора загрузки, ждет после загрузки последних данных 20 сек, и прячет идникатор 
			_clear_timer.addEventListener(TimerEvent.TIMER_COMPLETE, function(e: Event): void {
				slideHide();
			});
		}
		
		protected function getTimeout(): int {
			return 20000;
		}
		
		protected function initEvents(): void {
			app.addEventListener(GDataEvent.REQUEST, addRequest);
			app.addEventListener(GDataEvent.RESPONSE, decRequest); 
			app.addEventListener(GDataEvent.ERRORDATARESPONSE, decRequest); 
			app.addEventListener(pi_events.URLNOTFOUND, decRequest);
		}
		
		protected function addRequest(e: Event): void {
			_requestCount++;
			slideShow();
		}
		
		protected function decRequest(e: Event): void {
			_requestCount--;
			if (_requestCount <= 0) slideHide();
			if (_clear_timer.running) _clear_timer.stop();
			_clear_timer.start();
		}
		
	}
}